package com.example.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.pojo.dto.BookDeleteDTO;
import com.example.pojo.dto.BookInsertDTO;
import com.example.pojo.dto.BookListDTO;
import com.example.pojo.dto.BookUpdateDTO;
import com.example.pojo.entity.Book;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface BookMapper extends BaseMapper<Book> {
    /**
     * 新增图书
     *
     * @param bookInsertDTO
     */
    void insertBook(BookInsertDTO bookInsertDTO);

    /**
     * 根据图书ID删除图书
     *
     * @param bookDeleteDTO
     */
    @Delete("update tb_book set `delete` = 0, delete_reason = #{deleteReason} where id = #{id}")
    void deleteBook(BookDeleteDTO bookDeleteDTO);

    /**
     * 根据图书分类id分页查询图书列表
     *
     * @param bookListDTO
     * @return
     */
    List<Book> listByCategoryId(BookListDTO bookListDTO);

    /**
     * 根据图书编号查询图书信息
     *
     * @param id
     * @return
     */
    @Select("select * from tb_book where id = #{id};")
    Book getById(String id);

    /**
     * 修改图书信息
     *
     * @param bookUpdateDTO
     */
    void updateById(BookUpdateDTO bookUpdateDTO);
}
